@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u/* ascii to atascii */#include #ifndef M6502#include #endifchar buf1[40];char buf2[40];main(argcT}, argv)int argc;char ** argv;{ char * name; char * p; FILE * inf; FILE * outf; int ch; if (argc > 1){nameU} = argv[1];strcpy(buf1, name);} else{#ifdef M6502 printf("AT2A>"); if (getname(buf1) <= 0)exit(V}0);name = buf1;#elseprintf("AT2A what?\n");exit(0);#endif} inf = fopen(name, "r");/* printf("open '%s'->%x\n", W}name, inf); */ if ((int)inf <= 0){printf("Can't open '%s' error %x\n", name, errno);#ifdef M6502kbdchar();#endifeX}xit(0);} strcpy(buf2, buf1); p = strchr(buf2, '.'); if (!p)p = buf2 + strlen(buf2); strcpy(p, ".tmp"); outf = fY}open(buf2, "w");/* printf("open '%s'->%x\n", buf2, outf); */ while ((ch = fgetc(inf)) != EOF){switch (ch){#ifdef Z}M6502case 0x0D:fgetc(inf);case 0x0A:ch = '\n';break;case 0x09:ch = '\t';break;#elsecase '\n'[}:ch = 0x9B;break;case '\t':ch = 0x7F;break;#endif}/*fputc(ch, stdout);*/fputc(ch, outf);} fcl\}ose(inf); fclose(outf); delete(buf1); rename(buf2, buf1);/*#ifdef M6502 kbdchar();#endif*/}#ifdef M6502int ge]}tname(buf)char * buf;{ int i; int ch; i = 0;/* str idx */ for ( ; ((ch = kbdchar()) != '\n') ; ){if (ch == '^}\b'){if (i > 0){fputc('\b', stderr);i--;}} else{fputc(ch, stderr);buf[i] = ch;i++;_}}} buf[i] = '\0'; return strlen(buf);}#endif--;}} else{fputc(ch, stderr);buf[i] = ch;i++;7 4LN%HehL!`ܠؠԠРH8咅h`H8h`֠ҠΠʠƠ± a}HȱhL!`e` L L!L!L!L!L!L! ȘL! L! M Hȑh`HȱhL Hȱ b}hL Hȱh ` ` %!HȥhL! %!L! `HȑhL!L!HH hhL!HH hh c}L! H*h`L!`L!HIhIi```IHIh`e` !L `` !L{! !L! ! d} {!L ! !L  &L!L! 󨥂fjL! eHehL! 8H哪hL!  e}HhL! EHEhL! %H%hL!`\_ łXTM łFBE 0>7ł86/ 䃐-&ł'% 0ł f}䃐 ł`` 0ł 䃐ł۰ 0łʰ 䃐ł𹰼 L H hL g} lHh` {!L !L hh捠ilŕŔ liL h}#`L!  ! Ɣ !$ D$& $ D$& 򦓥 !`Heeh`` i} ! ! ! !Ńł &&L$FfFf3ōŌ8包卅 j}FfFfͥ !ĕ !` \$L! ` ` k}S i?H ihLt%  (l S# l} 7  u  "1 u  t! A" {! 9!% u  %LU&'  )%  ( "  |%% m}9! u '  . 9! u ".' u //  ) 0  |%% %  %% .  n} o0 9! u ! !% %  5% A" 9! u (  %% (  . 9! u  0 9! "Y o}u Lz' u  0 9!L' 9!L'L' #R' _' k' u  u  D0L,' u  - u  -%  2/ p}% %  i.  LY#AT2A>rCan't open '%s' error %x.tmpw S# a  9! 0 9! "L(L;(L( u ~ q} "< u "(~ //  D0 u #  9! #L( u //  D0 u  u A"  u `! u # r} 9! #L8( u  u A" `! u  5% # LY# S# ((  u3 ((  %LY# S# a    t! A s}" {! t! A"  t! P" 9! u # u  9!  ) # LY# S# M //    t! A" {! t! A"  t! P"  t} )  LY# S## 7  9!% u # % 9! # {! 9! u !L- u #% "3 u #  9! # #)  D0 u  u} 9!L)LQ* u  9! u #% "0 u #  9! # #)  D0 u  9!L) u #- " 9! u  9 v}!L* 9! u #0 " 0 9!L*  9! u # e3B u #  9! #  0 9! u # e3 u  9 w}!L+LE+ 9! u #. "< u  9!  0 9! u # e3 u  9!Lp+L+ 9!% u # % 9! # {! x}! 9!  9! u #  9! # # 3L, # u `!  A" `!L,! u  9!L,!   $3L,!   y}  1L,!    1L,!   1L,!    1L, u #  LY#L, #+c,s,d#,b<, z}oU,un,xL,  5% 9! u   u " !  u  9!  u "  u P" 9!L - 9! u ! {}!7 u #  9! # ! )  D0 u  9!L-- u #  9! # !0 u #  9! # #)  D0 u  |} 9!Ld- u 7 u #  9! # ! )  D0 u  9!L-L) u #  LY# A# 3 #L. u LY# E# }} M   u # / 9! " u //  LY# u  LY# S#R 7 V :  o0 X  %L. +/ ~}  % X  2 ./  2T :  o0 9! u 9!L.T u 9!   2 0/  2 }  2R  LY#D:, S#P 7 R :  o0 !# /  % T  2L/ T  % /  2  } 2P  LY#D:@ iɀ` /0^rwa d>JKHI }DEB VL:0``//` HHIDE Bh VL:0` `Œ eL! }L}0 0`%H$H` HIDEB VL:0`` A# a  u # 4 u  9!L0 9! u !L'1 } 9! u  9!L41 #1-1+ 9! u # e3=  u #  u #  9! # ! A" 0 P" 9!L=1  } u # # LY# I# a  u  9!  " 9!  " 9!  "  " 9! u %  !  u } A" `! u # " u #0 A" `!LO2 u #7 A" `! u  9!  u \$ 9! !L1 `! }3 # LY# E#  5% A"  %LY# /2 2DE BJK VL:0` /2 2DE!BJK V }L:0` B V0`` Ԇ !Ԇթ- ؠ0LQ3)ȑ` 0:`` } NHɛD 3ȥi揠 3Hhɛ`!8`` A[i ` A# } a   5% A"  P" 9!  u "O u ! 9! u #  9! #  u ! `! u #  9! #  u `! }L!4 # LY# A# ": "" " #LY# `! u #  9! #  u `! ]/* atascii to ascii */#include #ifndef M6502#include #define delete unlink#endifchar buf1[40];cha}r buf2[40];main(argc, argv)int argc;char ** argv;{ char * name; char * p; FILE * inf; FILE * outf; int ch; }if (argc > 1){name = argv[1];strcpy(buf1, name);} else{#ifdef M6502 printf("AT2A>"); if (getna}me(buf1) <= 0)exit(0);name = buf1;#elseprintf("AT2A what?\n");exit(0);#endif} inf = fopen(name, "r"); printf}("open '%s'->%x\n", name, inf); if ((int)inf <= 0){printf("Can't open '%s' error %x\n", name, errno);#ifdef M6502kbd}char();#endifexit(0);} strcpy(buf2, buf1); p = strchr(buf2, '.'); if (!p)p = buf2 + strlen(buf2); strcpy(p, ".}tmp"); outf = fopen(buf2, "w"); printf("open '%s'->%x\n", buf2, outf); while ((ch = fgetc(inf)) != EOF){switch (ch)}{#ifdef M6502case 0x0D:fgetc(inf);case 0x0A:ch = '\n';break;case 0x09:ch = '\t';break;#else}case 0x9B:/* atascii eol */ch = '\n';break;case 0x7F:/* atascii tab */ch = '\t';break;#endif}/}*fputc(ch, stdout);*/fputc(ch, outf);} fclose(inf); fclose(outf); delete(buf1); rename(buf2, buf1);/*#ifdef M}6502 kbdchar();#endif*/}#ifdef M6502int getname(buf)char * buf;{ int i; int ch; i = 0;/* str idx */ for }( ; ((ch = kbdchar()) != '\n') ; ){if (ch == '\b'){if (i > 0){fputc('\b', stderr);i--;}} el}se{fputc(ch, stderr);buf[i] = ch;i++;}} buf[i] = '\0'; return strlen(buf);}#endif--;}} eli '5LN%HehL!`ܠؠԠРH8咅h`H8h`֠ҠΠʠƠ±}HȱhL!`e` L L!L!L!L!L!L! ȘL! L! M Hȑh`HȱhL Hȱ}hL Hȱh ` ` %!HȥhL! %!L! `HȑhL!L!HH hhL!HH hh}L! H*h`L!`L!HIhIi```IHIh`e` !L `` !L{! !L! !} {!L ! !L  &L!L! 󨥂fjL! eHehL! 8H哪hL! }HhL! EHEhL! %H%hL!`\_ łXTM łFBE 0>7ł86/ 䃐-&ł'% 0ł }䃐 ł`` 0ł 䃐ł۰ 0łʰ 䃐ł𹰼 L H hL} lHh` {!L !L hh捠ilŕŔ liL}#`L!  ! Ɣ !$ D$& $ D$& 򦓥 !`Heeh`` } ! ! ! !Ńł &&L$FfFf3ōŌ8包卅}FfFfͥ !ĕ !` \$L! ` `}S i?H ihLt%  S)l S#} 7  u  "1 u  t! A" {! 9!% u  %LU&(  )%  b( "  |%% }9! u !(  u. 9!#( u  u  ) u ".2( u 00  ) 0  |%% }%  %% .  0 9! u ! !% %  5% A" 9! u L(  %% Q(  u. 9!S( } %  u  ) u  1 9! "Y u L' u  1 9!L' 9!L'L' #' ' ' u } u  0Lc' u  O. u  O.%  /% %  .  LY#AT2A>ropen '%s'->%xCan't open '%s' error} %x.tmpwopen '%s'->%x S# a  9! 0 9! "L$)L(Lq( u ~ "< u "(~ 00 } 0 u #  9! #L!) u 00  0 u  u A"  u `! u #  9! #L( u  u A" `! }u  5% # LY# S# Q)R)  3 Q)R)  %LY# S# a    t! A" {! t! A"  t! P" 9! u # u}  9!  * # LY# S# M 00    t! A" {! t! A"  t! P"  *  LY# S## 7  9!% u # % }9! # {! 9! u !LB. u #% "3 u #  9! # #)  0 u  9!LH*L* u  9! u #% "0} u #  9! # #)  0 u  9!LH* u #- " 9! u  9!L+ 9! u #0 " 0 9!L}@+  9! u # 3B u #  9! #  ,1 9! u # 3 u  9!Lo+L+ 9! u #. "< u }  9!  ,1 9! u # 3 u  9!L+L+ 9!% u # % 9! # {!! 9!  9! u #  9! # # C}4L, # u `!  A" `!L-! u  9!L-!   y3L-!    1L-!    1L-!}   1L-!    1L- u #  LY#L- #3,cY,sf,dx,b,o,u,xL,  5% 9! u  }  u " !  u  9!  u "  u P" 9!Lu- 9! u ! !7 u #  9! # ! ) } 0 u  9!L- u #  9! # !0 u #  9! # #)  0 u  9!L- u 7 u #  9! # ! } )  0 u  9!L.LH* u #  LY# A# d3 #Lr. u LY# E# M   u # 0 9! "} u 00  LY# u  LY# S#R 7 V :  0 X  %L / /  % X  2 /  2}T :  0 9! u 9!LN/T u 9!   2 /  2  3R  LY#D:, S#P 7 R : }  0 !# /  % T  2L/ T  % /  2  63P  LY#D:@ iɀ}` 00^rwa d>JKHIDEB VL0``}00` HHIDE Bh VL0` `Œ eL!L0 0`%H$H` HID}EB VL0`` A# a  u # 4 u  9!L21 9! u !L|1 9! u  9!L1 #c1-l1+} 9! u # 3=  u #  u #  9! # ! A" 0 P" 9!L1  u # # LY# I# a  u  9!  "} 9!  " 9!  "  " 9! u %  !  u A" `! u # " u #0 A}" `!L2 u #7 A" `! u  9!  u \$ 9! !L2 `! Q4 # LY# E#  5% A"  %LY}# 03 3DE BJK VL0` 053 53DE!BJK VL0` B V0`` } Ԇ !Ԇթ- ؠ0L3)ȑ` 0:`` NHɛD 74}ȥi揠 74Hhɛ`!8`` A[i ` A# a   5% A"  P" 9! } u "O u ! 9! u #  9! #  u ! `! u #  9! #  u `!Lv4 # LY# A# ": ""} " #LY# `! u #  9! #  u `!Lv4 # LY# A# ": ""5clsecho RUN"DA:%1.BAS" >>da:runbasicbasic <MSG0560 STA ICBAH0570 LDA(} #255 ; message length0580 STA ICBLL ; (overkill)0590 JSR CIOV ; print it0600 ;0610 ; Now to check to se(}e if the0620 ; program is already installed0630 ; so we don't have a bunch of0640 ; copies in memory...to do this0650 ; w(}e'll use the very accurate0660 ; method of sampling one byte0670 ; of code0680 ;0690 LDA VKEYBD ; get address of070(}0 STA 203 ; current key0710 LDA VKEYBD+1 ; routine0720 STA 2040730 LDY #5 ; check 6th byte0740(} LDA (203),Y0750 CMP #2 ; from 'AND #2'0760 BNE NOTINS0770 ; so I guess we can assume it's0780 ; already(} loaded...exit stage0790 ; right...0800 RTS 0810 ; in case it isn't loaded...0820 NOTINS0830 ; Plug values into prog(}ram...0840 CLC 0850 LDA MEMLO0860 STA $CB0870 STA DOSINIT+240880 ADC #DOSINIT-START0890 STA DOS(}INIT+40900 STA INSTALL+10910 LDA MEMLO+10920 STA $CC0930 STA DOSINIT+290940 ADC #00950 STA DOSI(}NIT+80960 STA INSTALL+20970 LDA DOSINI0980 STA DOSINIT+10990 LDA DOSINI+11000 STA DOSINIT+21010 ;1(}020 ; An improvement over previous1030 ; versions, this one will not1040 ; crash if you do a KEY command1050 ; and then [R(}ESET] in SpartaDOS.1060 ; When reinstalling, it always1070 ; gets the new VKEYBD address.1080 ; KEY will still disable it (}until1090 ; the next [RESET]. This loads1100 ; registers for reinstallation.1110 ;1120 CLC 1130 LDA MEMLO1140 (} ADC #VEC-START+11150 STA V1+11160 LDA MEMLO+11170 ADC #01180 STA V1+21190 LDA V1+11200 ADC (}#11210 STA V2+11220 LDA V1+21230 ADC #01240 STA V2+21250 ;1260 ; Now to actually move the bytes1270 ; (}in the program since we have1280 ; already modified it for1290 ; relocation...since this version1300 ; is larger than 255 (}bytes, I've1310 ; traded my quickie copier for1320 ; an industrial strength, 16-bit1330 ; version...1340 ;1350 LDY #(}01360 LDA # START1390 STA $CE1400 LDA MEMLO1410 STA $CB1420 (}LDA MEMLO+11430 STA $CC1440 COPY1450 LDA ($CD),Y1460 STA ($CB),Y1470 INC $CB ; bump the regs1480 (} BNE C11490 INC $CC1500 C1 INC $CD1510 BNE C21520 INC $CE1530 C2 LDA $CE ; check if done1540 CMP)} # >END+11550 BNE COPY1560 LDA $CD1570 CMP # }hisprogram helpful. ٺ CKEY is installed simply byloading the program. With SpartaDOS,ty1?}pe 'CKEY' at the command prompt.The program will signal that it isinstalled with a chirp. CKEY willnot install itself mor1@}e than once,as it takes up a small amount ofmemory to install. By placing theline 'CKEY' in your startup batchfile under1A} SpartaDOS, you can havethe program available at all times. 󺠛 : Pauses the screen dis1B}play as on most BBS's or MS-DOS computers. (Similar to Control-1 except it does not toggle) : Unpauses the s1C}creen display. Complement to Control-S. : Aborts the current operation. Generates the same action as pre1D}ssing the [BREAK] key. : Toggles the screen display. Turning the screen off results in a 20-30% incre1E}ase in processing speed. This will not work properly with narrow or wide screens like those used in the SDX Formatte1F}r Menu. : Reboots the system, like the SDX 'COLD' command. While all data in main memory will be lo1G}st, extended banks will be preserved, so the data in your SDX RAMdisks should still be there. (See the RAMDISK.SYS driv1H}er instructions in the SDX manual for further information) : Prints the text screen. When pressed, 1I}this halts the operation of the current program and outputs whatever data is on the text screen to the printer. All 1J}inverse video will be converted to regular video. Graphics characters will generate unpredictable results depending on1K} how your printer processes them. This command will only work in the standard text mode and will be ignored in graphic1L}s modes. After all data is sent to the printer, normal program operation will resume. : Will return CKEY com1M}mand keys to normal operations while held down. To type a Control-S, hold down [SELECT] while pressing Control and '1N}S'. (Shift-Control combinations will still not generate any ATASCII character) If you p1O}ress RESET, the program willreinitialize itself. If you use theKEY command in SpartaDOS, the programwill be disabled. Pr1P}essing [RESET]will restore the program. Unlikeprevious versions, this one will notcrash if you do a KEY commandfollowed 1Q}by a system reset. Note: This program has been tested with a variety of programs and should not present any difficul1R}ties when used with most programs; however, some problems may arise in using CKEY with a word processing package.1S} Control-S is used to save a document in many word processing packages, which happens to be used by CKEY. Some 1T}times, even holding the [SELECT] key down doesn't cause the word processing program to recognize the save command. 1U}This may result in a lost file due to an inability to save it to disk. To prevent this, do a KEY command before 1V}entering programs such as TextPro, or do not load CKEY at all. Some programs, notably BobTerm, will disable CKEY wh1W}ile they are running and restore it upon exiting. Comments and suggestions arewelcome... Send correspondence1X} to: InterNet: aa384@cleveland.Freenet.Edu BBS: Cleve. Free-Net (216)/368-8888 Comp. World Jr.: (71Y}16)/247-8355 Part-Time: (216)/582-1196 The Basement: (216)/381-7859 Snail-mail: Doug Wokoun 147801Z} Schreiber Rd. Maple Hts., OH 441371[} Hts., OH 441370Date: 10 Jun 91 18:31:26 GMT From: noao!ncar!elroy.jpl.nasa.gov!swrinde!zaphod.mps.ohio-state.edu!rpi!masscomp!know!daemon@ar5]}izona.edu (Doug Wokoun) Subject: CKEY program Version 1.5 To: Info-Atari8@naucse.cse.nau.edu This is an updated version of 5^}a program I released about a year ago that adds some control key commands to the 8-bit Atari. This version fixes some bugs, 5_}like the lockups that occured when the user did a 'KEY' in SpartaDOS and then pressed RESET, and will not load multiply copie5`}s of itself into memory. Program functions: Control-S: pauses the display (like ^1) Control-Q: unpauses the display Cont5a}rol-C: aborts (break key) Shift-Control-S: toggles the screen to increase speed Shift-Control-R: Reboots Shift-Control-P: 5b}Prints screen Source code included in .ARC file. the screen to increase speed Shift-Control-R: Reboots Shift-Control-P: 43 PAGE 1 10 ; SOURCE CODE FOR ECHO.CO9d}M 20 ; 30 ; by Jim Johnson 40 ; 50 ; works with any Atari DOS9e} which supports COMTAB 60 ; i.e., SpartaDOS, DOS XL, and OS/A+ 70 ; However, works best with 9f}SpartaDOS X 80 ; 90 ; 0100 ; CIO and IOCB equates =E456 0110 CIOV .9g}EQU $E456 =0342 0120 ICCOM .EQU $0342 =0344 0130 ICBAL .EQU $0344 =0345 0140 ICBAH .EQU $0345 9q}hB%DOS SYSB*)DUP SYSB SA2AT C B+`A2AT COMB AT2A C B,AT2A COMBBASIC BATBBBKCP COMB BBKCP DOCBBBKCP TXTBVCKEY ASMB7CKEY COMB <CKEY DOCB\CKEY TXTBcECHO ASMBECHO COMBECHO DOCBECHO TXTBINFODAT BPRINT BATBPSHISTRYTXTBHPSTR13 BASBLPSTR13 DOCBJREAD ME BPREADME 1ST =0348 0150 ICBLL .EQU $0348 =0349 0160 ICBLH .EQU $0349 =0009 0170 WRITE .EQU $09 9r} 0180 ; SpartaDOS equates =000A 0190 COMTAB .EQU 10 =003F 0200 LBUF .EQU 63 0210 ; 9s} 0220 ; The Program0000 0230 *= $4000 ;or wherever 0240 ; 0250 ;9t}Set up CIO to print text at LBUF 0260 ;4000 0270 INIT4000 A200 0280 LDX #0 ;IOCB 9u}0 (E:)4002 A93F 0290 LDA #63 ;set for max buffer4004 9D4803 0300 STA ICBLL,X4007 A900 0310 9v} LDA #04009 9D4903 0320 STA ICBLH,X400C A50A 0330 LDA COMTAB ;store comtab+68 at icba400E 18 039w}40 CLC 400F 6944 0350 ADC #[LBUF+5]4011 9D4403 0360 STA ICBAL,X4014 A50B 0370 LDA COMTAB+19x}4016 6900 0380 ADC #04018 9D4503 0390 STA ICBAH,X401B A909 0400 LDA #WRITE ;'print string' co9y}mmand401D 9D4203 0410 STA ICCOM,X4020 2056E4 0420 JSR CIOV ;print it4023 60 0430 RTS 4024 9z} 0440 *= $02E002E0 0040 0450 .WORD INIT ;run vectorASSEMBLY ERRORS: 0 26615 BYTES FREE PAGE 29{} SYMBOLS =E456 CIOV # 1,110 1,420 =000A9|} COMTAB # 1,190 1,330 1,370 =0345 ICBAH # 1,140 1,390 =0344 ICBAL # 1,139}}0 1,360 =0349 ICBLH # 1,160 1,320 =0348 ICBLL # 1,150 1,300 =0342 ICCOM 9~} # 1,120 1,410 4000 INIT # 1,270 1,450 =003F LBUF # 1,200 1,350 =0009 W9}RITE # 1,170 1,400 # 1,270 1,450 =003F LBUF # 1,200 1,350 =0009 W8&@#@?HI iDD iE B V`@# 1,270 1,450 =003F LBUF # 1,200 1,350 =0009 W<0Document File for ECHO.COMby Jim JohnsonWhen combined with batch file parameterpassing and I/O redirection, one of themA}ore useful MS-DOS commands is ECHO.For all its compatibility with MS-DOS,SpartaDOS X does not have this commandbuilt into A}the cartridge. My disk basedversion of ECHO.COM helps with thisomission. While the SpartaDOS versionof ECHO does not suppoA}rt MS-DOS's ECHO[ON|OFF] switches, it does support thevery useful ECHO 'text string' mode.In its simplest form, ECHO 'texA}tstring' simply prints whatever textfollows the command on the next screenline. Without MS-DOS's ECHO OFF featurethis is A}of limited use. This form willwork with all versions of SpartaDOS,DOS XL, and OS/A+.The text string can contain anyATASCA}II characters, however it musthave at least one character that isnot a space. Interesting effects canbe achieved using then entering a. The text stringis limited to a maximum of 58characters. At least one space mustapA}pear between the command 'ECHO' andthe text string.When combined with SpartaDOS X'sparameter passing and/or I/OredirectiA}on, ECHO becomes very useful.It is possible to synthesize otherSpartaDOS commands through the creativeuse of ECHO within bA}atch files.Command line parameters will beexpanded whenever a batch file isexecuted. Be sure to take this intoaccount whA}enever using ECHO within abatch file. The total expanded textstring cannot exceed 48 characters orit will be truncated. AlA}so be sure toplace at least one space between theend of the text string and the I/Oredirection characters (>>). TheredireA}ction characters also take partof the 48 character limit, but will notbe printed with the text string.A couple sample batA}ch files areincluded to demonstrate the usefulnessof ECHO.COM. PRINT.BAT will transferany printable file to your printer aA}ndperform a form feed after the file hasbeen sent. The command line shouldread:-PRINT [d:][path]filename.extWhere the A}drive and path are specifiedif the file is not in the currentdirectory (it is assumed that PRINT.BATis in the current SDX A}search path).SDX's new I/O redirection makes it moredifficult to run Atari BASIC programsfrom within a batch file. BASIC.A}BATshould solve the problem for you. Thecommand line should read:-BASIC [path]filenameThe batch file assumes the prograA}m ison drive A:, and supplies the .BASfilename extention for youautomatically. This is pretty much howMS-DOS starts a BAA}SIC program from thecommand line also. Again, it is assumedthat BASIC.BAT is in the current SDXsearch path. BASIC.BAT couA}ld easily beadapated to run cartridge basedlanguage programs in a similar fashion.The last file, ECHO.ASM, is a copy oftA}he MAC/65 assembly listing for thoseof you who are interested in how thecommand works.ECHO.COM is in the public domain, aA}nd Idon't expect any renumeration, but Iwould like to know how widely used itbecomes. I am also interested in seeingsome A}of the batch file implementations.You can drop me a post card at: JimJohnson, Rt. 3 Box 277E, Cambridge, MN55008. Or leaveA} me a message on the St.Paul Atari Computer Enthusiasts(S.P.A.C.E.) BBS at (612)774-0135ve@{This is the Echo utility that adds the echo command to SpartaDos. For those familiar with IBM's, echo works in a very similarE} way. Echo is used in batch files to echo text messages to the screen and to pass commands to the processor... An interestE}ing utility for SpartaDos users. ______________________________________________________________________________ Sherry LE}. Snyder L.P.N. Mike Todd - Publications. Tulane Dept. of Dermatology Tulane DepE}t. of Dermatology snyder10@convex1.tcs.tulane.edu dt01mws@music.tcs.tulane.edu New Orleans, Louisiana. E} Psychedelic Daydreams ______________________________________________________________________________E} Psychedelic Daydreams ______________________________________________________________________________D| FILE INFORMATION || || PATR13.AI}RC IS A FILE FROM GENIE || FOR PRINTING DOCS IN MULTI COL. || FORMAT. INCLUDES DOCS - WRITTEN || IN BASIC. I} |TI COL. || FORMAT. INCLUDES DOCS - WRITTEN || IN BASIC. H6clstype %1 >>prn:; the following ECHO command forces; a form feed by sending a Control L; to the printer.clsecho >>prM}n:clse %1 >>prn:; the following ECHO command forces; a form feed by sending a Control L; to the printer.clsecho >>prL Print Star History The original Print Star waswritten for a 1025 printer to printDOC files from PD disksQ}. It printed40-column text files in two or threepage columns at 6 or 8 lines to theinch. There was a header at the topoQ}f each page and a page number at thebottom. Version 1.1 was the same as theoriginal, with Epson-compatibleprinter coQ}des. This was written forKen Wickert of ACE of Syracuse, whowas so impressed with it that heposted it on both GEnie andCQ}ompuServe. It was he who first sawthe potential for using it forcaptured text. It was about thistime that I wrote REFORMQ}AT, whichconverts text into 40-column format. With this, Ken was able to printonline magazines and other long textfiles uQ}sing a minimum of paper. Print Star 1.2 changed thetwo-column printout to use elite(12cpi) print. By this time I hadQ}purchased a used Gemini 10X printer,and added a special driver for it. Version 1.2 also added the footeroption. VerQ}sion 1.25 added 7 and 12lines/inch printing in three columns,a byline, odd/even page printing,page block printing, and a cQ}ustomprinter driver option. By this time,I was a GEnie subscriber myself, andposted this version in the GEnieLibrary. IQ}t was posted in theCompuServe Library by Rick ReaserJr. Version 1.3 adds an option wherea second file may be printedQ} usingmany of the parameters of theprevious one. A minor bug in the2-column printout with a footer on anEpson was correcQ}ted, and the Geminidriver was extended to encompass theGemini 10 as well as the 10X. Theodd/even page printing menu was gQ}ivenanother option that would automatethe process of printing on both sidesof the paper. A minor addition hadPrint Star Q}skip over any blank linesthat would come at the top of aprinted column.desof the paper. A minor addition hadPrint Star PJ##CCCCCCCC1C8C19BUZKSIZFOUTLINELADDIDICOL1COL2COL3RTESTFILENAMETITLEHCMDBCMDFCMDRCMDTU}OFULONULOFFSHCMDFOOT1FOOT2BYLINEPAGFILFINISHENHDGLNSCOLUMNCOLINBFLAFPOEPCMARNULPOEBOTBYTPTOEFLAU}STYLDELA@@@@@@@@ A  @ AD@ U} B)XXK#X4)444(55 $5 .5 85Q5U}V5[5 `5 x!5x"P6)P#$@%&@U'@(@)*@+,-U}.@/0@12@3@45@86B78@9@:;<U}=@d!!***************************!!* ԠҠ *,!!*MULTI-COLUMN TEXT PRINTER*!!* by THOMASU} J. ANDREWS *!!***************************X (c) 1992 Thomas J. Andrews{6-6-@'6-@U}36-@?6-@K6-@W6-@c6-@o6-@{6-A J+AA%A ,U};,4-F67,.>:AS,J 66-AD@';@ ,;A2,06-C:,66-::;,;,;,;@A,;,U};@,;@@,L99;@ ,;,;,;,;@%,;,;,;,B&;A ,;A ,;@,,6-26U}-86-B6.D1:x B9 A06-#(9@@F A3AR% }U}+-F(FORMATTING PAGE # %) 6. 67,.67,.#6.)6..@w&6-%+"*",$P:',.-l U}6-6-@@ -&43 B:,"37<,4XXX)7<,4A!f"*4A!A#A$U}A%67<,. A&` 67<,. A& 67<,.(  6-%6-%@9    T A8 U}F:,A8A3 ? (} (#(DEVICE NOT ON LINE?(PRESS ANY KEY TO RESUME  B A @F:,"ApU}(}(1(FILE NOT FOUND!!!6@ AuH 2F:,"A`#( DRIVE# ERROR(2 Aw ?F:,"AD(}(U}0(DISK DRIVE ERROR5? A82F:,A6#(ERROR #F:,(2 Aut 6-4*4*"Ac' 6-U}%6- 6-' AA<'"P:',*"6-'P:',*"6-*"AbhA&-U}@&(PRINTING PAGE # 0* Ah " (%(*(' 6-6-@@'"*!AH U} \ ((( (-&$6. 967B:,%,.7<,&67B:,%,. 967B:,%,.7<,U}, "67B:,%,. ,67B:,%,.7<,P ( 6-%6-%@9 |(Aa D=  U} %-A"2*@26 =(    , 6. 67B:,%,.=:,,67B:,%,.p>6-+A2&B:,,'U} -3*@@27 >(*Ae86-&+!*",$P:',j"Ad**4P:*U}@9 6-#6-)6-/6-9 AfD6-(}DONE !*( Press a Key4 BU}:6-D Bd ( AZP(HPause for Paper Change - Check Your Printer - Press any Key When ReaU}dyZ B, A- (}-$(Ҡҡ'(*(-(P)(!PRESS TO RESTART THIS PAGEP("PRESS U}Š TO RESTART PROGRAMX##(PRESS TO STOP PROGRAM-AR B-"AUAD "@2%U} Aq(>:A%,L#(#(BE SURE DISK IS IN DRIVE7 4P:(7(#BE SURE PRINTER AND PAPER ARE REU}ADY1( ( (1( (PRESS FOR DISK DIRECTORYxJJ BTO CHANGE DEFAULT DRIVE # TO 'n', USE 'Dn:' WITH NO FILE NAMEU})J(,(!ENTER NAME OF 40-COLUMN TEXT FILE8ARJA@d@((XXXXXXXX.XXX), A34" U}A, Aw * 4D:6.D1: A* Awl > B:,"$7<,4D*7<,4:*6.4 A> Aw & U}6.B:,!7<,4:&6.4! B:,!7<,4: 6.!67B:,%,.!7B:,!@*(FILENAME TOO LONG !U}-(7 Ay`"" A-(#& B:,!@@'& A#   A#. (U}(.(NOT A 40-COLUMN TEXT FILE !T$$($(PRESS ANY KEY TO CONTINUE$ B% Au% 6.67,.*.* }U}%> B)@7-@d>H& ( & 'F:,"A6Bt'( DISK ERRORU}'  $<(%K:)"%$(4 B( PRINTER TYPE?%1AR4()=(. STAR GEMINI0U}(. EPSON COMPATIBLE=(. OTHERh)- B6-&@H- )!B) (B0*` B/(SAMEU} SETTINGS ON NEXT FILE?J(. DIFFERENT SETTINGS`(. SAME SETTINGS*D(. END PROGRAM& BD @I)U}!@QB*,6-&@I"#AR)(},\+ 6-6-& B(++6-@UAR!U}+ B$,N'(CHOOSE COLUMNS & LINE SPACING-N(. 2-COLUMN - 6 LINES/INCH,e$(. 2-COLUMN - 8 LINES/INCHU}E(. 3-COLUMN - 6 LINES/INCHe(. 3-COLUMN - 7 LINES/INCH,K$ . 3 COLUMN - 8 LINES/INCHE . 3 COLUMN - 12 LIU}NES/INCHKP-+ B+ @I)!@TB-"@I6-6-.-"@P6-!6-@-6-@tU}|."@Q6-6-.-"@R6-!6-@-6-@fD/-"@S6-!6-@-6-@t/=U}"@T6-!6-@-6-A36-= B( 0$ B$(CHOOSE PRINT STYLEp0 -(. DRAFT0--@U}$(. DOUBLE STRIKE'(*(-(81 B1#6-&@I# )!B#2T B+(OUTPUT DEVICE:FILENAME?U}T($ BLANK RESPONSE DEFAULTS TO 'P:'d246.P:2! B:,!!7<,4:B3,3! B:,!!7<,4:U}B338(ϠŠš*-A. 8 B)3BHX4- B$(CHOOSE PAPER TYPE:*-(4U}(. SINGLE SHEETS 5?(. CONTINUOUS PAPER"?(. SINGLE SHEET AUTOFEED5+ B+ @I)!@QB7U}5""@I6-"6-&P:',L66-&@H6Y 6-6-B B;(PRINT WHOLE FILE? (Y/N)E BYU}@xBC7;(( FIRST PAGE BA$-6-P:,; BAx7:(( LAST PAGE BB#,6-P:,:U} BB7"BH@8n B%(PRINT WHICH PAGES?7( . ALL PAGESR(. ODD-NUMBERED PAGESn(. EVEN-NUMU}BERED PAGES8((( . ODD, THEN EVEN-NUMBERED PAGES99 B6-&@I9 @I)!@RBFl9- 6-6-U}"@R!6-'6--6-9` BAR<(PAGE HEADING? (40 CHAR. MAX) @OB:,!@@`6.7<@@,U}4:C 6. 67@@,.#67,.:6-+@@&B:,,'%C67,.:F("(BYLINE? (80 CHAR. MAX)&5B:,!@F6.U}7<@,:A 6. 67@,.#67,.86-+@&B:,,'A67,.`;G BARG(#CHOOSE HEADIU}NG & BYLINE PLACEMENT;,(. FIRST PAGE ONLY,( . ALL PAGES(<+ B+ @I)!@PBT<#6-&@HU}#ARU}46- Bh>26-P:',6-6.&-B:,2Bc> 7<,46- BdH?67,.7<,U} Bd?67B:,%,.7<,@ t@L(:(/PRINT A LINE BETWEEN FOOTER AND TEXT? (Y/N)LA@d@% BU}6-@%6-}. This continues untilthe entire page has been printed,followed by the footer. Print Starthen goes back to the input devZ?}ice toget the next pagefull. Print Star 1.3 is a sharewareprogram and as such you are bound byyour Honor as an AtariZ@}an to pay mysuggested fee if you use it, to helpcompensate me for my time, effort,and expenses, and to provideincentive fZA}or producing even betterprograms. My fee is: $3.00 and aletter with suggestions for a betterprogram. I wish to develop PZB}rintStar 1.3 into a multi-purpose textfile printer that is both versatileand easy to use. In order to dothis, I am askinZC}g for suggestions forfeatures that you would like to seein such a program. Already suggestedare the ability to read otherZD} than 40character files, a "print preview"feature so that you can see how fulla page is with different formats, andNLQ prZE}inting. I'm sure there aremore ideas out there. If anyone hasan idea for a program that they'dlike to see done, I'd be hZF}appy tohear about it-maybe I could do one! Send all replies to: THOMAS J. ANDREWS 7805 US ROUTEZG} 20 MANLIUS NY 13104 A.C.E. of Syracuse "Backstairs" BBS: 315-458-0118 User name: Tom ZH}Andrews GEnie: J.ANDREWS24 Should there be further upgradesto any of my programs, includingPrint Star, tZI}he new versions willalways appear first on the BackstairsBBS.rther upgradesto any of my programs, includingPrint Star, tX@CKEY.COMv1.5READ.ME Full inst^K}ructions may be foundin the file: CKEY.DOC à CKEY .COM - main program CKEY .DOC -^L} full documentation CKEY .ASM - MAC/65 source code READ .ME - this file This program and related sourc^M}ecode is Copyright 1991 by Doug Wokounand may be freely distributed and/ormodified. Any altered version of theprogram mu^N}st be distributed withcomplete source code and credit givento the original author.^O}riginal author.\E Addendum to the BBK Command Processor bQ} by: Bryan Schappel If you are a SpartaDOS user and you feel "at home" by using a command line DOS. I bR}personally am very grateful to SpartaDOS since my experience with it made the transition to MS-DOS machines a snap! It bS} was that feeling of being in control that made me stay with SpartaDOS. Even though I had to trade off the fact that bT}Sparta's file storage FAT tables etc. are very suceptible to becoming trashed seemingly for no reason. NbU}ow we Sparta users do have a choice... the BBK Command Processor, it gives you that familiar Dn: prompt and the combV}mands are almost identical to SpartaDOS. The only drawbacks at this time is the fact that it was written for bW}DOS 2.x, which means no sub-directory support. Now WAIT!!! The BBK CP can also be used with MYDOS, and though at tbX}his time there is no 'internal' sub-directory support, I'll be putting together some 'external modules' that will fbY}acilitate sub-directory support from the command line. You need only use the first 3 characters of any bZ}of BBKCP's commands... ie.) PRO for PROTECT (lock) a file, or ERA to ERASE a file. What you may want to do isb[} go into the file with a sector editor like DISKMEND or DISKMASTER and change the ERA for ERASE to DEL for DELETE. b\} (NOTE:the position within the file of the 3 character commands determine what command they are. You can use any 3 b]}characters for any command, it's the position within the file that determines what command it is.) You cb^}ould even use TEXTPRO to go in and change the command characters. The string of command characters is as follows: b_} .ERAPROUNPRENDIRCOPRUNCARTYPKILRVZ^ So to change ERASE to DELETE just load up a Sector Editor or Textpro b`} and change the ERA in the above string to DEL and the change is made! You can use this technique to also alter tba}he commands within SpartaDOS. I plan on making external modules for the BBKCP to take advantage of all obb}f MYDOS' options. As fare as file structure FAT tables the VTOC etc. MYDOS is by far the most stable and reliable DOS avbc}ailable, and now I don't have to give up the command line. I'd like to thank Bryan Schappel from BBK for creabd}ting such a fine Command Line Processor. I'll also expend some effort in trying to locate him anbe}d see if he could create a CP that will take advantage of MYDOS. Thanks! Terry Browning 354 Ebf}ast Bay Street Milwaukee, Wisconsin 53207 Phone:(414)483-3639 " 482-4147 bg} Phone:(414)483-3639 " 482-4147 `D